package com.shujia.scala

import scala.collection.mutable

object Demo20Set {
  def main(args: Array[String]): Unit = {

    /**
      * 不可变Set
      *
      */

    val set = Set(1, 2, 3, 4, 5, 6, 7, 8, 9, 1)

    println(set)
    println(set.head)
    println(set.tail)
    println(set.last)
    println(set.sum)
    println(set.max)
    println(set.min)


    /**
      * 取出集合中的奇数
      *
      * filter: 将集合中的元素一个一个传递给后面的函数，函数返回true保留数据，函数返回false过滤数据
      *
      */
    val filterSet: Set[Int] = set.filter((i: Int) => i % 2 == 1)

    println(filterSet)


    val s1 = Set(1, 2, 3, 4, 5, 6)
    val s2 = Set(3, 4, 5, 6, 7, 8, 9)

    println(s1 & s2) //取交集
    println(s1 | s2) // 并集
    println(s1 &~ s2) //差集

    /**
      * list set map array 都有以下方法
      * map
      * flatMap
      * filter
      * foreach
      * groupBy
      *
      *
      * set 集合不能排序, set map 不能反转
      */


    /**
      * 可变Set
      *
      */

    val hashSet = new mutable.HashSet[String]()


    //增加元素
    hashSet.add("java")
    hashSet += "scala"

    println(hashSet)
    //移除元素
    hashSet.remove("java")
    hashSet -= "scala"
    println(hashSet)

    //可变集合转换成不可变集合
    val set2: Set[String] = hashSet.toSet

  }

}
